Prefetching is a caching technique used for improving the performance of disk and memory systems. Nominal caching increases performance by keeping copies of accessed data, in the hope that the cached data will be accessed again. Prefetching loads the caching memory before an access to data, in the hope it will be accessed soon.
The critical information required for a successful prefetch algorithm includes:                What data to prefetch        The circumstances under which the prefetch occurs        The length of time to keep prefetched data cached (if no access occurs)        
If the wrong data is prefetched, no accesses to the data will occur and no performance improvements will be realized. Likewise, if the right data is fetched at the wrong time, it may be replaced (by other caching data) before the access occurs. Incorrectly specifying the “keep time” will have a similar effect.
In a storage system, defining a prefetch sequence, effectively guessing what future data accesses will be, is a computationally intensive and sometimes impossible task.